Dell Fn+F4

A simple solution to fix the non-working microphone mute shortcut on Dell Latitude laptops running Linux.

release date: 2025-07-23

modification date: 2025-09-10

At some point, a certain kernel version restored FN+F4 support on Dell. In my case, the keyboard shortcut now works without the help of this workaround.

about problem

The issue I’m addressing occurs in certain Dell Latitude laptops that have a microphone mute function on the F4 key. While this feature works correctly on Windows, it often fails on Linux with newer kernels.

When pressing the Fn+F4 shortcut, you would expect to see a notification or icon indicating the microphone is muted. However, this does not happen.

Personally, I didn’t really need this function much, but I started wondering why it wasn’t working... I also thought that besides me, there might be more people for whom this problem could be important. Maybe someone does podcasts? Works with voice and needs to mute the microphone? That convinced me — a workaround must be found!

first step

First, I tried to determine if and how the system detects pressing those keys and their combinations. As it turned out... it doesn’t fully detect them...

Initial attempts with tools like showkey, xev, evtest, and similar suggested that Linux completely misses the simultaneous pressing of these keys. Literally, the commands showed no reaction when pressing F4 with Fn held down.

The salvation turned out to be the acpid package, which not only detected the key press, recognized its ID, but even saw the functornamed button/micmute MICMUTE. Almost a success!

time to script

The saving grace turned out to be the fact that acpid, apart from simply listening to and identifying key presses, also has a service capable of launching, for example, shell scripts upon specific combinations of key presses and releases. What does that mean for us? It means it is time to write something.

Now it is time to read the manuals for acpid, and then write the first file – a trigger for the button/micmute event:

File /etc/acpi/events/micmute:

event=button/micmute
action=/etc/acpi/micmute-dell.sh
File /etc/acpi/micmute-dell.sh:

#!/bin/bash
pactl set-source-mute @DEFAULT_SOURCE@ toggle
or – if you are running Pulseaudio/Pipewire as a system-wide service as root:

#!/bin/bash
export XDG_RUNTIME_DIR=/run/user/0
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
pactl set-source-mute @DEFAULT_SOURCE@ toggle
Next, some final polishing and starting the service:

# Make script executable
sudo chmod +x /etc/acpi/micmute-dell.sh

# Run acpid service (systemd version)
sudo service acpid start

# Make acpid running on startup
sudo systemctl enable acpid
And that is it! Simple, right?

dependencies

For everything to work correctly, we need:
  • pactl from the PulseAudio package
  • acpid from the acpid package
In this case, the whole setup requires a properly configured and running PulseAudio/Pipewire.

The entire presented solution works on Linux systems based on systemd. On other distributions, the principle of operation should be the same, but the way of launching may differ.
If you believe that my work has meaning and value, consider making a donation so I can continue to grow, full of inspiration - >link<